#pragma once
//数据库服务器类(单例类，一个系统有且只有一个数据库服务器对象)，用于管理用户、数据库列表等数据

#include "msql_global.h"
#include "MSqlDefines.h"
#include "MSqlDatabase.h"
#include "MSqlConnection.h"

namespace NsMSql
{
	class MSQL_EXPORT MSqlServer
	{
	private:
		MSqlServer();
	public:
		static MSqlServer& getInstance();
	public:
		bool open(const MSqlServerAttr& sqlServerAttr);
		bool isOpen();
	public:
		//创建数据库
		bool createDatabase(const QString& databaseName);
		//删除数据库
		bool dropDatabase(const QString& databaseName);
		//切换数据库并返回
		MSqlDatabase* useDatabase(const QString& databaseName);
		//获取当前数据库名称
		QString getCurrentDatabaseName();
		//获取数据库列表
		QStringList getDatabaseNameList();
	private:
		static MSqlServer* m_pInstance;

		bool m_open = false;
		MSqlServerAttr m_sqlServerAttr;
		QMap<QString, MSqlDatabase*> m_nameToDatabaseMap;	//<数据库名称，数据库对象>
		QString m_currentDatabaseName;						//当前数据库名称
		MSqlDatabase* m_pCurrentDatabase = nullptr;			//当前数据库对象
	};
}

